home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / matrx042.zip / MATMUL.C < prev    next >
Text File  |  1992-05-24  |  1KB  |  60 lines

  1. /*
  2. *-----------------------------------------------------------------------------
  3. *    file:    matmul.c
  4. *    desc:    matrix multiplication
  5. *    by:    ko shu pui, patrick
  6. *    date:    24 nov 91 v0.1
  7. *    revi:
  8. *    ref:
  9. *       [1] Mary L.Boas, "Mathematical Methods in the Physical Sciene,"
  10. *    John Wiley & Sons, 2nd Ed., 1983. Chap 3.
  11. *
  12. *-----------------------------------------------------------------------------
  13. */
  14.  
  15. #include <stdio.h>
  16. #include "matrix.h"
  17.  
  18. /*
  19. *-----------------------------------------------------------------------------
  20. *    funct:    mat_mul
  21. *    desct:    multiplication of two matrice
  22. *    given:    A, B = compatible matrice to be multiplied
  23. *    retrn:    NULL if malloc() fails
  24. *        else allocated matrix of A * B
  25. *    comen:
  26. *-----------------------------------------------------------------------------
  27. */
  28. MATRIX mat_mul( A, B )
  29. MATRIX A, B;
  30. {
  31.     int    i, j, k;
  32.     MATRIX    C;
  33.  
  34.     if ((C = mat_creat( MatRow(A), MatCol(B), UNDEFINED )) == NULL)
  35.         return (NULL);
  36.  
  37.     for (i=0; i<MatRow(A); i++)
  38.     for (j=0; j<MatCol(B); j++)
  39.     for (k=0, C[i][j]=0.0; k<MatCol(A); k++)
  40.         {
  41.         C[i][j] += A[i][k] * B[k][j];
  42.         }
  43.     return (C);
  44. }
  45.  
  46. double mat_diagmul( A )
  47. MATRIX A;
  48. {
  49.     int i;
  50.     double result = 1.0;
  51.  
  52.     for (i=0; i<MatRow(A); i++)
  53.         {
  54.         result *= A[i][i];
  55.         }
  56.     return (result);
  57. }
  58.  
  59.  
  60.